package a2022.a20220617;

/**
 * @author lenovo
 * @date 2022/6/17
 */
public class a {
    public void duplicateZeros(int[] A) {
        int n = A.length, cnt0 = 0;
        // 先统计零的总数
        for (int i = 0; i < n; ++i) if (A[i] == 0) ++cnt0;
        for (int i = n - 1; i >= 0; --i) {
            // 碰到零就减去，剩余的就是左边零的个数
            if (A[i] == 0) --cnt0;
            // A[i] 向右移动 cnt0 位
            if (i + cnt0 < n) {
                A[i + cnt0] = A[i];
                // 如果 A[i] 是零，移动完之后，后面还要补个零
                if (A[i] == 0 && i + cnt0 + 1 < n) {
                    A[i + cnt0 + 1] = 0;
                }
            }
        }
    }

}
